Sledovenia historie
Otázka od: Ivan Kozak
22. 10. 2004 13:27
Potreboval by som sledovat historiu zmien urobenych uzivatelmi v tabulke
Interbase, na sieti. Viem to riesit, staci do triggeru sledovanej tabulky
pridat zapis do tabulky pre historiu. Mam len jeden problem: neviem ako
zistit, ze KTO previedol prave triggerovanu zmenu: potreboval by som vediet
bud pocitac, z ktoreho bola urobena zmena alebo aspon uzivatela, ktory ju
urobil, a toto tiez zaevidovat. Neviete mi poradit, ako na to? Dik. Ivan
Kozak
Odpovedá: Jaroslav Uher
22. 10. 2004 14:11
On 22 Oct 2004 at 14:27, Ivan Kozak wrote:
> Potreboval by som sledovat historiu zmien urobenych uzivatelmi v
> tabulke Interbase, na sieti. Viem to riesit, staci do triggeru
> sledovanej tabulky pridat zapis do tabulky pre historiu. Mam len jeden
> problem: neviem ako zistit, ze KTO previedol prave triggerovanu zmenu:
> potreboval by som vediet bud pocitac, z ktoreho bola urobena zmena
> alebo aspon uzivatela, ktory ju urobil, a toto tiez zaevidovat.
a mas v kazde takove tabulce pole <zmenu_provedl_uzivatel_xy> a
pole <zmenu_provedena_dne> ?
Jarek Uher
Odpovedá: Ivan Kozak
22. 10. 2004 14:23
Celkom Ta nerozumiem, o co Ti ide, takze ak dovolis, zrekapitulujem to:
V tabulkach (z ktorych robim historiu) mam pole ze kto previedol zmenu a
kedy, ale ich ponim spolu z datami z klientskeho pocitaca (tam si to viem
zistit).
Problem je v tom, ze historiu som chcel viest MIMO klientskeho pocitaca,
vyhradne na serveri, a zapis do historie by bol spusteny, akonahle nastal
update, insert alebo delete v sledovanej tabulku. Data preberam z povodnej
vety, to je OK. Ale uzivatela nemozem preberat pretoze zmenu mohol previest
niekto uplne iny ako ten, kto robil poslednu zmenu na vete tabulky.
Neda sa tu nejak vyuzit USERS databazy?
S datumom nemam problem, pretoze tam zadavam CURRENT_TIMESTAMP. Takze jedine
mi nie je jasne, dokial mam zistit, ze ktory uzivatel previedol zmenu v
tabulke, ktora vyvolala zapis do historie.
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Jaroslav Uher
Sent: Friday, October 22, 2004 3:11 PM
To: delphi-l@clexpert.cz
Subject: Re: Sledovenia historie
On 22 Oct 2004 at 14:27, Ivan Kozak wrote:
> Potreboval by som sledovat historiu zmien urobenych uzivatelmi v
> tabulke Interbase, na sieti. Viem to riesit, staci do triggeru
> sledovanej tabulky pridat zapis do tabulky pre historiu. Mam len jeden
> problem: neviem ako zistit, ze KTO previedol prave triggerovanu zmenu:
> potreboval by som vediet bud pocitac, z ktoreho bola urobena zmena
> alebo aspon uzivatela, ktory ju urobil, a toto tiez zaevidovat.
a mas v kazde takove tabulce pole <zmenu_provedl_uzivatel_xy> a
pole <zmenu_provedena_dne> ?
Jarek Uher
Odpovedá: little_bobes@centrum.cz
22. 10. 2004 14:55
Ja historii vytvarim nasledovne:
INSERT INTO HIST_TABULKA (blablabla, ZMENIL, DATUM) VALUES (blablabla,
USER, 'NOW');
pricemz USER je interni promenna Interbase/Firebird a obsahuje login jmeno
prihlaseneho uzivatele.
Bob
> Potreboval by som sledovat historiu zmien urobenych uzivatelmi v tabulke
> Interbase, na sieti. Viem to riesit, staci do triggeru sledovanej tabulky
> pridat zapis do tabulky pre historiu. Mam len jeden problem: neviem ako
> zistit, ze KTO previedol prave triggerovanu zmenu: potreboval by som
vediet
> bud pocitac, z ktoreho bola urobena zmena alebo aspon uzivatela, ktory ju
> urobil, a toto tiez zaevidovat. Neviete mi poradit, ako na to? Dik. Ivan
> Kozak
Odpovedá: Viktor Doubek
22. 10. 2004 15:03
> pricemz USER je interni promenna Interbase/Firebird a obsahuje login jmeno
> prihlaseneho uzivatele.
.. nebo taky current_user (ale nevim, myslim, ze od verze 1.5), ale nikde jsem
nevidel, co vlastne pouzivas za databazi. VD
Odpovedá: Ivan Kozak
22. 10. 2004 15:33
To V.D: a Liitle_B"
Pouzivam Interbase 7.1 a pracuju tam subezne viaceri uzivatelia.
Zapis to Historie je spusteny v triggeri AfterInsert, BeforeUpdate a
BeforeDelete a je to obycajny INSERT do historie. Udaje do historie
okopirujem z vety, ktora je updatovana (insertovana, deletovana). a teda
triggerovala insert do historie.
To, co neviem rozhodnut je nasledovne: je niekde v databaze ulozene, ze
KTORYM prihlasenym uzivatelom bola tato veta, ktora triggerovala zapis do
historie, zmenena (insertovana, deletovana)?
T.j. ak Fero zmenil vetu V1, a Jano zmenil vetu V2 v tabulke, tak do
historie sa zapisu dva zaznamy H1 (V1, Fero) a H2 (V2, Jano). Otazka je,
odkial vziat, ze ci to bol Fero alebo Jano.
Sorry, ze to takto primitivne vysvetlujem, ale chcem predist nedorozumeniu.
Dik.
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Viktor Doubek
Sent: Friday, October 22, 2004 4:03 PM
To: delphi-l@clexpert.cz
Subject: Re: Sledovenia historie
> pricemz USER je interni promenna Interbase/Firebird a obsahuje login jmeno
> prihlaseneho uzivatele.
.. nebo taky current_user (ale nevim, myslim, ze od verze 1.5), ale nikde
jsem nevidel, co vlastne pouzivas za databazi. VD
Odpovedá: Martin Schayna
22. 10. 2004 15:47
Ivan Kozak wrote:
> To, co neviem rozhodnut je nasledovne: je niekde v databaze
> ulozene, ze KTORYM prihlasenym uzivatelom bola tato veta, ktora
> triggerovala zapis do historie, zmenena (insertovana, deletovana)?
> T.j. ak Fero zmenil vetu V1, a Jano zmenil vetu V2 v tabulke, tak do
> historie sa zapisu dva zaznamy H1 (V1, Fero) a H2 (V2, Jano). Otazka
> je, odkial vziat, ze ci to bol Fero alebo Jano.
Pokud nepouzivas interni overovani uzivatelu na databazovem serveru
ale z klienta, udelej si sloupec treba ChangedBy do kazde tabulky kterou
chces takto logovat. Vsechny Update a Insert prikazy budou posilat
aktualne prihlaseneho uzivatele. Triggery na techto tabulkach budou
moci pouzit sloupec ChangedBy pro zalogovani zmeny.
Pokud pouzivas interni overovani uzivatelu, pak lze pouzit pro Insert
prikaz do logovaci tabulky vestavenou funkci USER, ktera vraci
aktualniho uzivatele pod kterym jsi prihlaseny do databaze.
Martin Schayna
Odpovedá: little_bobes@centrum.cz
22. 10. 2004 15:55
Od toho je prave ta vnitrni promenna USER, ktera v ten dany okamzik, kdy se
pouzije, obsahuje jmeno toho, v jehoz transakci se dany trigger spustil.
Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
Bob
----- Original Message -----
From: "Ivan Kozak" <ivan@boucek.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, October 22, 2004 4:33 PM
Subject: Re: Sledovenia historie
> To V.D: a Liitle_B"
>
> Pouzivam Interbase 7.1 a pracuju tam subezne viaceri uzivatelia.
Odpovedá: Jaroslav Uher
22. 10. 2004 16:13
On 22 Oct 2004 at 16:55, little_bobes@centrum.cz wrote:
> Od toho je prave ta vnitrni promenna USER, ktera v ten dany okamzik,
> kdy se pouzije, obsahuje jmeno toho, v jehoz transakci se dany trigger
> spustil.
>
> Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
a kdyz das SELECT CURRENT_USER FROM TABULKA
staci ti to na identifikaci user(a) ?
Nebo jeste kazdemu uzivateli definujes ROLE ?
Jarek Uher
Odpovedá: little_bobes@centrum.cz
22. 10. 2004 16:35
K cemu je tento select dobry?
Abych zjistil, kdo s danou tabulkou pracuje?
CURRENT_USER je stejny jako USER, ale je pouze pro FB 1.0 a vyssi
Bob
> > Od toho je prave ta vnitrni promenna USER, ktera v ten dany okamzik,
> > kdy se pouzije, obsahuje jmeno toho, v jehoz transakci se dany trigger
> > spustil.
> >
> > Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
>
> a kdyz das SELECT CURRENT_USER FROM TABULKA
> staci ti to na identifikaci user(a) ?
>
> Nebo jeste kazdemu uzivateli definujes ROLE ?
>
> Jarek Uher
>
Odpovedá: Jaroslav Uher
22. 10. 2004 16:53
On 22 Oct 2004 at 17:35, little_bobes@centrum.cz wrote:
> K cemu je tento select dobry?
> Abych zjistil, kdo s danou tabulkou pracuje?
> CURRENT_USER je stejny jako USER, ale je pouze pro FB 1.0 a vyssi
> > > Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
nechci byt *stoura*, ale pises "a mam to tam i nyni ve FB1.5"
BTW, ja bych si take rad zjednodusil trigger na vsech tech tabulkach,
kde pouzivam "journal".
A necham se poucit.
Zatim je to hoodne ruci prace, coz mi sice zase az tak moc nevadi,
ale pokud by se to udelat lepe (jednoduseji) --> sem s tim.
Jarek Uher
Odpovedá: little_bobes@centrum.cz
25. 10. 2004 6:00
> > K cemu je tento select dobry?
> > Abych zjistil, kdo s danou tabulkou pracuje?
> > CURRENT_USER je stejny jako USER, ale je pouze pro FB 1.0 a vyssi
>
> > > > Ja to pouzivam jiz od IB6 a mam to tam i nyni ve FB1.5
>
> nechci byt *stoura*, ale pises "a mam to tam i nyni ve FB1.5"
>
Sice nevim, co mas presne na mysli, ale ja jsem tim chtel rici, ze jsme
kdysi pouzivali IB6, kde jsem ve strukture databaze pouzival parametr USER a
kdyz jsme presli na FB, tak jsem tu samou strukturu prenesl i do FB vcetne
toho parametru USER, tzn. ze jsem nepouzil CURRENT_USER.
Bob